package ar.com.tallerdos.smartdinner.activity;

import java.util.List;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import ar.com.tallerdos.smartdinner.R;
import ar.com.tallerdos.smartdinner.adapter.SeleccionarMesaAdapter;
import ar.com.tallerdos.smartdinner.business.MesaBusiness;
import ar.com.tallerdos.smartdinner.model.Mesa;
import ar.com.tallerdos.smartdinner.sync.MesasAbiertasWSClient;

public class SeleccionarMesasActivity extends Activity {

    private SeleccionarMesaAdapter mesasAdapter = null;
    private List<Mesa> mesas;
    private Boolean[] mesasSeleccionadas;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.seleccionar_mesas_activity);
	MesasAbiertasWSClient dlTask = new MesasAbiertasWSClient(this);
	dlTask.execute();
    }
    
    public void onFinishLoading() {
	ListView mesasListado = (ListView) findViewById(R.id.mesasListado);

	this.mesas = MesaBusiness.findMesasAbiertas();
	this.mesasAdapter = new SeleccionarMesaAdapter(this, this.mesas);

	Intent intent = getIntent();
	String nrosDeMesas = intent
		.getStringExtra(AbrirMesaActivity.MESAS_SELECCIONADAS);
	initMesasSeleccionadas(nrosDeMesas);
	this.mesasAdapter.setMesasSeleccionadas(this.mesasSeleccionadas);

	mesasListado.setAdapter(this.mesasAdapter);
    }

    private void initMesasSeleccionadas(String nrosDeMesas) {
	this.mesasSeleccionadas = new Boolean[this.mesas.size()];

	if (nrosDeMesas.equals(getResources().getString(R.string.seleccionar))) {
	    for (int i = 0; i < this.mesas.size(); i++) {

		this.mesasSeleccionadas[i] = false;
	    }
	} else {
	    for (int i = 0; i < this.mesas.size(); i++) {
		Mesa mesa = this.mesas.get(i);
		for (String nroMesa : nrosDeMesas.split(",")) {
		    if (mesa.getCodigo().equals(Integer.valueOf(nroMesa.trim()))) {
			this.mesasSeleccionadas[i] = true;
			break;
		    } else {
			this.mesasSeleccionadas[i] = false;
		    }
		}
	    }

	}
    }

    public void seleccionarMesas(View view) {
	Intent returnIntent = new Intent();
	String idsMesasSeleccionadas = "";
	for (int i = 0; i < this.mesas.size(); i++) {
	    if (mesasAdapter.getMesasSeleccionadas()[i]) {
		idsMesasSeleccionadas += this.mesas.get(i).getId() + ",";
	    }
	}
	if (!idsMesasSeleccionadas.isEmpty()) {
	    idsMesasSeleccionadas = idsMesasSeleccionadas.substring(0,
		    idsMesasSeleccionadas.length() - 1);
	}

	//returnIntent.putExtra("result", idsMesasSeleccionadas); 
	if (idsMesasSeleccionadas.contains(",")) {//TODO CAMBIAR ESTO CUANDO SE IMPLEMENTE LO DE MULTIPLES MESAS
	    returnIntent.putExtra("result", idsMesasSeleccionadas.split(",")[0]);
	    Mesa mesa = this.mesas.get(0);
	    this.mesas.clear();
	    this.mesas.add(mesa);
	} else {
	    returnIntent.putExtra("result", idsMesasSeleccionadas);
	}
	setResult(RESULT_OK, returnIntent);
	finish();
    }

}
